package cn.zyq.baking.controller;

import cn.zyq.baking.commons.response.JsonResult;
import cn.zyq.baking.pojo.dto.UserChangeDTO;
import cn.zyq.baking.pojo.dto.UserLoginDTO;
import cn.zyq.baking.pojo.dto.UserRegDTO;
import cn.zyq.baking.pojo.dto.UserUpdateDTO;
import cn.zyq.baking.pojo.vo.UserAdminVO;
import cn.zyq.baking.pojo.vo.UserVO;
import cn.zyq.baking.service.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    IUserService userService;

    @PostMapping("/reg")
    public JsonResult reg(UserRegDTO userRegDTO){
        userService.reg(userRegDTO);
        return JsonResult.ok();
    }

    @PostMapping("/login")
    public JsonResult login(UserLoginDTO userLoginDTO){
        UserVO userVO=userService.login(userLoginDTO);
        return JsonResult.ok(userVO);
    }

    /**个人中心：修改用户昵称*/
    @PostMapping("/update")
    public JsonResult update(UserUpdateDTO userUpdateDTO){
        userService.update(userUpdateDTO);
        return JsonResult.ok();
    }


    /**管理员查询所有用户*/
    @GetMapping("")
    public JsonResult listForAdmin(){
        List<UserAdminVO> list=userService.listForAdmin();
        return JsonResult.ok(list);
    }

    /**管理员删除某个用户*/
    @PostMapping("/{id}/delete")
    public JsonResult deleteById(@PathVariable  Long id){
        userService.deleteById(id);
        return JsonResult.ok();
    }

    /**管理员将某用户设置为管理员*/
    @PostMapping("/change")
    public JsonResult change(UserChangeDTO userChangeDTO){
        userService.change(userChangeDTO);
        return JsonResult.ok();
    }

}
